#include "picstatebtn.h"
#include"const.h"
#include<QEvent>

PicStateBtn::PicStateBtn(QWidget *parent): QPushButton(parent)
{

}

void PicStateBtn::setIcons(const QString &normal, const QString &hover, const QString &pressed, const QString &normal_2, const QString &hover_2, const QString &pressed_2)
{
    _normal = normal;
    _hover = hover;
    _pressed = pressed;
    _normal_2 = normal_2;
    _hover_2 = hover_2;
    _pressed_2 = pressed_2;

//    绘图对象
    QPixmap tmpPixmap;
//    加载图片
    tmpPixmap.load(normal);
//    将按钮的大小修改为图片的大小
    this->resize(tmpPixmap.size());
//    设置图标
    this->setIcon(tmpPixmap);
//    强制按钮的正常显示、悬浮、按下时大小不变；防止出现意外导致按钮大小变化了
    this->setIconSize(tmpPixmap.size());
    _cur_state = PicBtnStateNormal;
}

PicStateBtn::~PicStateBtn()
{

}

bool PicStateBtn::event(QEvent *e)
{
    switch (e->type()) {
    case QEvent::Enter:
        if(_cur_state < PicBtnState2Normal)
        {
            setHoverIcon();
        }
        else
        {
            setHover2Icon();
        }
        break;
    case QEvent::Leave:
        if(_cur_state < PicBtnState2Normal)
        {
            setNormalIcon();
        }
        else
        {
            setNormal2Icon();
        }

        break;
    case QEvent::MouseButtonPress:
        if(_cur_state < PicBtnState2Normal)
        {
            setPressedIcon();
        }
        else
        {
            setPressed2Icon();
        }
        break;
    case QEvent::MouseButtonRelease:
        if(_cur_state < PicBtnState2Normal)
        {
            setHover2Icon();
        }
        else
        {
            setHoverIcon();
        }
        break;
    default:
        break;
    }
    return QPushButton::event(e);
}

void PicStateBtn::setNormalIcon()
{
    //    绘图对象
        QPixmap tmpPixmap;
    //    加载图片
        tmpPixmap.load(_normal);
    //    设置图标
        this->setIcon(tmpPixmap);
        _cur_state = PicBtnStateNormal;
}

void PicStateBtn::setHoverIcon()
{
    //    绘图对象
        QPixmap tmpPixmap;
    //    加载图片
        tmpPixmap.load(_hover);
    //    设置图标
        this->setIcon(tmpPixmap);
        _cur_state = PicBtnStateHover;
}

void PicStateBtn::setPressedIcon()
{
    //    绘图对象
        QPixmap tmpPixmap;
    //    加载图片
        tmpPixmap.load(_pressed);
    //    设置图标
        this->setIcon(tmpPixmap);
        _cur_state = PicBtnStatePress;
}

void PicStateBtn::setNormal2Icon()
{
    //    绘图对象
        QPixmap tmpPixmap;
    //    加载图片
        tmpPixmap.load(_normal_2);
    //    设置图标
        this->setIcon(tmpPixmap);
        _cur_state = PicBtnState2Normal;
}

void PicStateBtn::setHover2Icon()
{
    //    绘图对象
        QPixmap tmpPixmap;
    //    加载图片
        tmpPixmap.load(_hover_2);
    //    设置图标
        this->setIcon(tmpPixmap);
        _cur_state = PicBtnState2Hover;
}

void PicStateBtn::setPressed2Icon()
{
    //    绘图对象
        QPixmap tmpPixmap;
    //    加载图片
        tmpPixmap.load(_pressed_2);
    //    设置图标
        this->setIcon(tmpPixmap);
        _cur_state = PicBtnState2Press;
}

void PicStateBtn::SlotStart()
{
    setNormal2Icon();
}

void PicStateBtn::SlotStop()
{
    setNormalIcon();
}
